package cn.demoncat.util.lang.entity;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

import cn.demoncat.util.lang.constant.StringConstant;

/**
 * LayIm的数据结果
 * 
 * @author 延晓磊
 *
 * @since 2018年8月8日
 */
public class LayimResult extends Result{
 
	// 响应状态：0成功，其它失败
	private String code;

	/**
	 * data = {src : ? }
	 */
	public static final String KEY_SRC = "src";
	/**
	 * data = {name : ? }
	 */
	public static final String KEY_NAME = "name";
	
	/**
	 * 转换Result为LayimResult
	 * 
	 * @param result
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年8月8日
	 */
	public static LayimResult parse(Result result) {
		LayimResult layimResult = new LayimResult();
		layimResult.setCode(Result.isSuccess(result) ? StringConstant.N0 : result.getStatus());
		layimResult.setStatus(result.getStatus());
		layimResult.setMsg(result.getMsg());
		layimResult.setData(result.getData());
		return layimResult;
	}
	
	/**
	 * 转换文件上传的Result为LayimResult
	 * 
	 * @param result
	 * @param name		文件名
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年8月14日
	 */
	public static LayimResult parse(Result result, String name) {
		LayimResult layimResult = new LayimResult();
		layimResult.setCode(Result.isSuccess(result) ? StringConstant.N0 : result.getStatus());
		layimResult.setStatus(result.getStatus());
		layimResult.setMsg(result.getMsg());
		if (Result.isSuccess(result)) {
			Map<String, Object> data = new HashMap<>();
			data.put(KEY_SRC, Result.getStrData(result));
			data.put(KEY_NAME, name);
			layimResult.setData(data);
		}
		return layimResult;
	}
	
	/**
	 * 响应状态：0成功，其它失败
	 */
	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	@Override
	public boolean equals(Object o) {
		if (this == o) return true;
		if (o == null || getClass() != o.getClass()) return false;
		if (!super.equals(o)) return false;
		LayimResult that = (LayimResult) o;
		return Objects.equals(code, that.code);
	}

	@Override
	public int hashCode() {
		return Objects.hash(super.hashCode(), code);
	}
}
